home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 095 - AppleWorks Mailing Program - Automated Form Letters.dsk / UNCRUNCHED.bas < prev   
BASIC Source File  |  2019-02-17  |  23KB  |  373 lines

  1. 100  REM  THIS VERSION IS THE UN-CRUNCHED SO IT MAY BE EASILY READ AND CONVERTED IF NEEDED.(K.S.)
  2. 110  HIMEM: 37120
  3. 120 ST$ = ""
  4. 130  LET D$ =  CHR$(4)
  5. 140  PRINT D$;"BLOAD KEYIN,A$95D0"
  6. 150  REM  DETERMINE MACHINE ID
  7. 160  LET MACHID =  PEEK(49048)
  8. 170  IF MACHID = 186  THEN ID = 1: REM  MACHINE IS A //C
  9. 180  IF MACHID <128  THEN 3770: REM  MACHINE IS A // OR //+
  10. 190  LET MACHID = MACHID -128
  11. 200  IF MACHID -128 > = 64  THEN 3770: REM   MACHINE IS NOT A // ANYTHING
  12. 210  LET MACHID = MACHID -32
  13. 220  IF MACHID >16  THEN MEM = 1: REM  MACHINE IS 128K:LET  MACHID=MACHID-16 
  14. 230  IF MACHID <2  THEN 3770: REM   MACHINE DOES NOT HAVE AN 80 COLUMN CARD
  15. 240  IF ID < >1  AND MEM < >1  THEN LIMIT = 150: LET LSTRING = 8000: GOTO 610: REM  NO EXTENDED MEMORY CARD 
  16. 250 LIMIT = 245: LET LSTRING = 7000: GOTO 610: REM     EXTENDED MEMORY CARD
  17. 260  INVERSE : PRINT " ";: NORMAL : PRINT  CHR$(8);
  18. 270  ONERR  GOTO 3790: REM  CATCH CTRL-C
  19. 280  IF  PEEK(49152) <128  THEN 280
  20. 290  POKE 216,0
  21. 300  RETURN 
  22. 310  REM <CTRL-J>        ANALYZE WORD PROCESSOR FILE<CTRL-J>
  23. 320  FOR I = 1 TO CT
  24. 330  VTAB 12: HTAB 27: PRINT "Analyzing Line ";I;" of ";CT;" lines."
  25. 340  LET LA = 1
  26. 350  IF  LEN(ST$(I)) <8  THEN 450
  27. 360  FOR B =  LEN(ST$(I)) TO 1  STEP  -1
  28. 370  IF  MID$ (ST$(I),B,6) < >"[MERGE"  THEN  GOTO 440
  29. 380  LET LC =  VAL( MID$ (ST$(I),B +6,2)): LET PL = 7: IF LC = 0  THEN 420
  30. 390  IF LC >9  THEN PL = PL +1
  31. 400  IF LC >30  THEN 420
  32. 410  IF  MID$ (ST$(I),B +PL,1) = "*"  OR  MID$ (ST$(I),B +PL,1) = "]"  THEN 430
  33. 420  PRINT D$;"CLOSE": GOTO 3740
  34. 430  LET D(I,LA) = B: LET LA = LA +1: IF LA >7  THEN  PRINT D$;"CLOSE": GOTO 3730
  35. 440  NEXT B
  36. 450  LET D(I,LA) = 0
  37. 460  NEXT I: RETURN 
  38. 470  REM <CTRL-J>         MERGE DATA BASE INTO WORD PROCESSOR <CTRL-J>
  39. 480  LET LC =  VAL( MID$ (ST$(I),B +6,2)):PL = 9
  40. 490  IF LC >9  THEN PL = PL +1
  41. 500  IF  MID$ (ST$(I),B +(PL -2),1) < >"*"  THEN 550
  42. 510  LET PL = PL +1
  43. 520  IF L$(LC) < >""  THEN 550
  44. 530  LET ST$(I) =  CHR$(147): REM   DO NOT PRINT THIS LINE
  45. 540  RETURN 
  46. 550  IF B = 1  THEN  LET ST$(I) = L$(LC) + MID$ (ST$(I),PL): GOTO 580
  47. 560  IF  MID$ (ST$(I),B +(PL -1),1) = ""  THEN  LET ST$(I) =  LEFT$(ST$(I),B -1) +L$(LC): RETURN 
  48. 570  LET ST$(I) =  LEFT$(ST$(I),B -1) +L$(LC) + RIGHT$(ST$(I), LEN(ST$(I)) -B +1 -(PL -1))
  49. 580  LET B = B + LEN(L$(LC)) -2
  50. 590  RETURN 
  51. 600  REM                 START OF MAIN PROGRAM<CTRL-J>
  52. 610  PRINT D$;"PR#3": PRINT " ": IF ID = 1  OR MEM = 1  THEN  DIM ST$(LIMIT),L$(30),D(LIMIT,7): GOTO 630
  53. 620  DIM ST$(LIMIT),L$(30),TM$(LIMIT),D(LIMIT,7)
  54. 630 SP = 1:PT = 2:SLOT = 1:DISK$ = "Data Disk: Disk 2": ONERR  GOTO 650
  55. 640  PRINT D$;"OPEN CONFIG": PRINT D$;"READ CONFIG": INPUT SLOT: INPUT LF: INPUT SP:PC = 1
  56. 650  IF  PEEK(222) = 5  OR  PEEK(222) = 0  THEN  GOTO 670
  57. 660  PRINT D$;"CLOSE": GOTO 3680
  58. 670  PRINT D$;"CLOSE CONFIG": PRINT D$;"PREFIX": INPUT PR$: POKE 216,0: TEXT : HOME 
  59. 680  LET TITLE$ = "AppleWorks Mailing Program": IF ID = 1  THEN DISK$ = "Data Disk: External"
  60. 690  VTAB 1: HTAB 2: PRINT "Version 1.0": VTAB 1: POKE 36,67: PRINT "July 20, 1984"
  61. 700  VTAB 1: HTAB 26: PRINT TITLE$
  62. 710  VTAB 2: HTAB 2: FOR I = 1 TO 79: PRINT "_";: NEXT I
  63. 720  VTAB 23: HTAB 2: FOR I = 1 TO 79: PRINT "_";: NEXT I
  64. 730  POKE 34,3: POKE 35,22: POKE 33,60: POKE 32,12: HOME : PRINT 
  65. 740  PRINT "This program allows you to automatically merge data"
  66. 750  PRINT "created using the AppleWorks Data Base into a master"
  67. 760  PRINT "document created using the AppleWorks Word Processor."
  68. 770  PRINT : PRINT "For example, you can merge a name and address file"
  69. 780  PRINT "into a form letter to produce customized letters with"
  70. 790  PRINT "just a few keystrokes."
  71. 800  PRINT : PRINT "The instructions are contained in four AppleWorks Word"
  72. 810  PRINT "Processor files on this disk. If you have not done so"
  73. 830  PRINT "already, start up AppleWorks now and read the instructions."
  74. 840  PRINT "Since they are several pages long, you may want to print"
  75. 850  PRINT "them out for reference.": PRINT 
  76. 860  POKE 33,80: POKE 32,0
  77. 870  VTAB 22: POKE 36,45: PRINT "Copyright Apple Computer, Inc 1984";
  78. 880  HTAB 2: VTAB 24: PRINT "Press any key to continue ";: GOSUB 260: POKE 49168,0
  79. 890  HOME 
  80. 900  GOSUB 910: GOTO 960
  81. 910  VTAB 1: HTAB 2: PRINT DISK$;
  82. 920  VTAB 1: HTAB 26: PRINT TITLE$
  83. 930  VTAB 2: HTAB 2: FOR ZZ = 1 TO 79: PRINT "_";: NEXT ZZ
  84. 940  VTAB 23: HTAB 2: FOR ZZ = 1 TO 79: PRINT "_";: NEXT ZZ
  85. 950  RETURN 
  86. 960  POKE 34,23: HOME : POKE 34,3: POKE 35,22: VTAB 1: POKE 36,52: FOR I = 1 TO 28: PRINT " ";: NEXT I: VTAB 1: POKE 36,68: PRINT "Escape: Quit"
  87. 970  GOSUB 980: GOSUB 990: GOSUB 1000: GOSUB 1020: GOSUB 1030: GOSUB 1050: GOSUB 1060: INVERSE : ON PT GOSUB 1000,1030,1060: NORMAL : GOTO 1070
  88. 980  VTAB 10: HTAB 28: PRINT "Location of Data Disk:": RETURN 
  89. 990  VTAB 12: HTAB 28: PRINT "1. ";: RETURN 
  90. 1000  IF ID = 1  THEN  VTAB 12: HTAB 31: PRINT "Internal Drive": RETURN 
  91. 1010  VTAB 12: HTAB 31: PRINT "Drive 1": RETURN 
  92. 1020  VTAB 14: HTAB 28:: PRINT "2. ";: RETURN 
  93. 1030  IF ID = 1  THEN  VTAB 14: HTAB 31: PRINT "External Drive": RETURN 
  94. 1040  VTAB 14: HTAB 31: PRINT "Drive 2": RETURN 
  95. 1050  VTAB 16: HTAB 28: PRINT "3. ";: RETURN 
  96. 1060  VTAB 16: HTAB 31: PRINT "Pathname": RETURN 
  97. 1070  HTAB 2: VTAB 24: PRINT "Type number, or use arrows, then press Return (Press 'P' for Printer Setup) ";PT;
  98. 1080  GOSUB 260: GOTO 1090
  99. 1090  IF  PEEK(49152) = 155  THEN 3820
  100. 1100  GET IN$
  101. 1110  IF IN$ = "P"  OR IN$ = "p"  THEN  GOSUB 2940: GOTO 890
  102. 1120  IF  ASC(IN$) >48  AND  ASC(IN$) <52  THEN  ON PT GOSUB 1000,1030,1060: LET PT =  VAL(IN$): GOTO 1160
  103. 1130  IF IN$ =  CHR$(13)  THEN 1170
  104. 1140  IF IN$ =  CHR$(10)  THEN  ON PT GOSUB 1000,1030,1060: LET PT = PT +1: IF PT = 4  THEN PT = 1
  105. 1150  IF IN$ =  CHR$(11)  THEN  ON PT GOSUB 1000,1030,1060: LET PT = PT -1: IF PT = 0  THEN PT = 3
  106. 1160  INVERSE : ON PT GOSUB 1000,1030,1060: NORMAL : GOTO 1070
  107. 1170  IF PT = 3  THEN 1320
  108. 1180  VTAB 1: POKE 36,63: PRINT "Escape: Main Menu"
  109. 1190  REM <CTRL-J>       DETERMINE DATA DISK<CTRL-J>
  110. 1200  IF PT = 3  THEN 1320
  111. 1210  IF ID = 0  THEN DS$ = "Disk " + STR$(PT) +"  ": GOTO 1240
  112. 1220  IF PT = 1  THEN DS$ = "Internal"
  113. 1230  IF PT = 2  THEN DS$ = "External"
  114. 1240  LET DISK$ = "Data Disk: " +DS$
  115. 1250  HTAB 10: VTAB 20: PRINT "Place your Data Disk in ";
  116. 1260  IF ID = 1  THEN  PRINT "the ";DS$;" Drive";
  117. 1270  IF ID = 0  THEN  PRINT "Drive ";PT;
  118. 1280  PRINT " and shut the door.": POKE 34,23: HOME : POKE 34,3: HTAB 2: VTAB 24: PRINT "Press any key to continue ";: GOSUB 270: IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 890
  119. 1290  POKE 49168,0
  120. 1300  ONERR  GOTO 3510
  121. 1310  VTAB 1: HTAB 2: PRINT DISK$;: FOR I = 1 TO 5: PRINT " ";: NEXT I: PRINT TITLE$;: PRINT D$;"PREFIX ,S6,D";PT: PRINT D$;"PREFIX": INPUT PH$: POKE 216,0: GOTO 1530
  122. 1320  VTAB 16: HTAB 40: FOR I = 1 TO 40: PRINT ".";: NEXT I
  123. 1330  POKE 34,23: HOME : POKE 34,3: VTAB 24: HTAB 2: PRINT "Enter the pathname of your data disk";
  124. 1340  VTAB 1: POKE 36,63: PRINT "Escape: Main Menu"
  125. 1350  VTAB 16: HTAB 40: IF PH$ < >""  THEN  PRINT PH$;
  126. 1360  GOSUB 260
  127. 1370  IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 890
  128. 1380  GET TM$: IF  ASC(TM$) <27  AND TM$ < > CHR$(8)  AND TM$ < > CHR$(13)  THEN  GOSUB 270: GOTO 1370
  129. 1390  IF TM$ =  CHR$(127)  OR TM$ =  CHR$(8)  THEN 1410
  130. 1400  GOTO 1440
  131. 1410  IF  LEN(PH$) = 0  THEN  GOSUB 270: GOTO 1370
  132. 1420  IF  LEN(PH$) = 1  THEN  LET PH$ = "": PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1360
  133. 1430  LET PH$ =  LEFT$(PH$, LEN(PH$) -1): PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1360
  134. 1440  IF TM$ < > CHR$(13)  THEN  LET PH$ = PH$ +TM$
  135. 1450  IF  LEN(PH$) >39  THEN  LET PH$ =  LEFT$(PH$, LEN(PH$) -1):: GOTO 1360
  136. 1460  IF TM$ =  CHR$(13)  THEN 1480
  137. 1470  PRINT TM$;: GOTO 1360
  138. 1480  IF PH$ = ""  THEN 1360
  139. 1490  IF  LEFT$(PH$,1) < >"/"  THEN  LET PH$ = "/" +PH$
  140. 1500  IF  RIGHT$(PH$,1) < >"/"  THEN  LET PH$ = PH$ +"/"
  141. 1510  ONERR  GOTO 3530
  142. 1520  LET DISK$ = "Pathname: " + LEFT$(PH$,12): VTAB 1: HTAB 2: PRINT DISK$;: FOR I = 1 TO 24 - LEN(DISK$): PRINT " ";: NEXT I: PRINT TITLE$;: PRINT D$;"PREFIX ";PH$: POKE 216,0: GOTO 1530
  143. 1530  POKE 34,23: HOME : POKE 34,3: HOME : LET TM$ = "": LET R$ = "": LET LT = 0
  144. 1540  REM <CTRL-J>              GET NAME OF WORD PROCESSOR FILE<CTRL-J>
  145. 1550  VTAB 10: HTAB 10: PRINT "Name of Word Processor File: ";: IF WP$ < >""  THEN  PRINT WP$
  146. 1560  PRINT 
  147. 1570  VTAB 1: POKE 36,63: PRINT "Escape: Main Menu"
  148. 1580  VTAB 24: HTAB 2: PRINT "Enter name of Word Processor File: ";: IF WP$ < >""  THEN  PRINT WP$;
  149. 1590  GOSUB 260
  150. 1600  IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 890
  151. 1610  GET TM$: IF  ASC(TM$) <27  AND TM$ < > CHR$(8)  AND TM$ < > CHR$(13)  THEN  GOSUB 270: GOTO 1600
  152. 1620  IF TM$ =  CHR$(127)  OR TM$ =  CHR$(8)  THEN 1640
  153. 1630  GOTO 1670
  154. 1640  IF  LEN(WP$) = 0  THEN  GOSUB 270: GOTO 1600
  155. 1650  IF  LEN(WP$) = 1  THEN  LET WP$ = "": PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1590
  156. 1660  LET WP$ =  LEFT$(WP$, LEN(WP$) -1): PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1590
  157. 1670  IF TM$ < > CHR$(13)  THEN  LET WP$ = WP$ +TM$
  158. 1680  IF  LEN(WP$) >40  THEN  LET WP$ =  LEFT$(WP$, LEN(WP$) -1):: GOTO 1590
  159. 1690  IF TM$ =  CHR$(13)  THEN 1710
  160. 1700  PRINT TM$;: GOTO 1590
  161. 1710  IF WP$ = ""  THEN 1590
  162. 1720  VTAB 10: HTAB 39: PRINT WP$;: FOR I = 1 TO 40 - LEN(WP$): PRINT " ";: NEXT I: PRINT 
  163. 1730  REM <CTRL-J>      GET NAME OF DATA BASE FILE<CTRL-J>
  164. 1740  POKE 34,23: HOME : POKE 34,11: HOME 
  165. 1750  VTAB 12: HTAB 10: PRINT "Name of Data Base File: ";: IF DB$ < >""  THEN  PRINT DB$
  166. 1760  PRINT 
  167. 1770  VTAB 1: POKE 36,53: PRINT "Escape: Word Processor File"
  168. 1780  VTAB 24: HTAB 2: PRINT "Enter name of Data Base File: ";: IF DB$ < >""  THEN  PRINT DB$;
  169. 1790  GOSUB 260
  170. 1800  IF  PEEK(49152) = 155  THEN  POKE 49168,0: VTAB 1: POKE 36,53: PRINT "                           ": GOTO 1530
  171. 1810  GET TM$: IF  ASC(TM$) <27  AND TM$ < > CHR$(8)  AND TM$ < > CHR$(13)  THEN  GOSUB 270: GOTO 1800
  172. 1820  IF TM$ =  CHR$(127)  OR TM$ =  CHR$(8)  THEN 1840
  173. 1830  GOTO 1870
  174. 1840  IF  LEN(DB$) = 0  THEN  GOSUB 270: GOTO 1800
  175. 1850  IF  LEN(DB$) = 1  THEN  LET DB$ = "": PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1790
  176. 1860  LET DB$ =  LEFT$(DB$, LEN(DB$) -1): PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1790
  177. 1870  IF TM$ < > CHR$(13)  THEN  LET DB$ = DB$ +TM$
  178. 1880  IF  LEN(DB$) >40  THEN  LET DB$ =  LEFT$(DB$, LEN(DB$) -1):: GOTO 1790
  179. 1890  IF TM$ =  CHR$(13)  THEN 1910
  180. 1900  PRINT TM$;: GOTO 1790
  181. 1910  IF DB$ = ""  THEN 1790
  182. 1920  VTAB 12: HTAB 34: PRINT DB$;: FOR I = 1 TO 40 - LEN(DB$): PRINT " ";: NEXT I: PRINT 
  183. 1930  REM <CTRL-J>        GET NUMBER OF CATEGORIES IN DATA BASE<CTRL-J>
  184. 1940  POKE 34,23: HOME : POKE 34,3
  185. 1950  VTAB 14: HTAB 10: PRINT "Number of categories in each label: "
  186. 1960  VTAB 1: POKE 36,53: PRINT "                           ": VTAB 1: POKE 36,58: PRINT "Escape: Data Base File"
  187. 1970  VTAB 24: HTAB 2: PRINT "Enter the number of categories in each label: ";
  188. 1980  GOSUB 260
  189. 1990  IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 1740
  190. 2000  GET TM$: IF  ASC(TM$) >47  AND  ASC(TM$) <58  OR TM$ =  CHR$(8)  OR TM$ =  CHR$(13)  THEN 2020
  191. 2010  GOSUB 270: GOTO 1990
  192. 2020  IF TM$ =  CHR$(13)  AND R$ < >""  THEN 2100
  193. 2030  IF TM$ =  CHR$(13)  THEN 1980
  194. 2040  IF TM$ =  CHR$(8)  AND  LEN(R$) = 0  THEN  GOSUB 270: GOTO 1990
  195. 2050  IF TM$ =  CHR$(8)  AND  LEN(R$) = 1  THEN  LET R$ = "": PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1980
  196. 2060  IF TM$ =  CHR$(8)  THEN  LET R$ =  LEFT$(R$, LEN(R$) -1): PRINT  CHR$(8);"  "; CHR$(8); CHR$(8);: GOTO 1980
  197. 2070  LET R$ = R$ +TM$
  198. 2080  IF  LEN(R$) >2  THEN  LET R$ =  LEFT$(R$, LEN(R$) -1):: GOTO 1980
  199. 2090  PRINT TM$;: GOTO 1980
  200. 2100  LET R =  VAL(R$): IF R = 0  THEN R$ = "": GOTO 1940
  201. 2110  VTAB 14: POKE 36,46: PRINT R;" "
  202. 2120  IF R >30  THEN 3710
  203. 2130  POKE 34,23: HOME : POKE 34,16: POKE 35,22: HOME 
  204. 2140  VTAB 1: POKE 36,53: PRINT "                           "
  205. 2150  REM           <CTRL-J>OPEN FILES<CTRL-J>
  206. 2160  ONERR  GOTO 2320
  207. 2170  PRINT D$;"OPEN ";PH$;WP$;",TTXT"
  208. 2180  ONERR  GOTO 2860
  209. 2190  PRINT D$;"OPEN ";PH$;DB$;", TTXT"
  210. 2200  REM         <CTRL-J> READ WORD PROCESSOR FILE<CTRL-J>
  211. 2210  VTAB 16: HTAB 10: PRINT "Reading Word Processor File";
  212. 2220  LET LGTH = 0:ER = 0
  213. 2230  ONERR  GOTO 2320
  214. 2240  IF ST$ < >""  THEN  FOR I = 1 TO CT: LET ST$(I) = "": NEXT I
  215. 2250  LET I = 1
  216. 2260  PRINT D$;"READ ";PH$;WP$
  217. 2270  CALL 38352:ST$ =  MID$ (ST$,1):ST$(I) = ST$
  218. 2280  PRINT ".";: LET I = I +1: IF I = LIMIT  THEN  PRINT D$;"CLOSE": GOTO 3690
  219. 2290  LET LGTH = LGTH + LEN(ST$): IF LGTH >LSTRING  THEN  PRINT D$;"CLOSE": GOTO 3720
  220. 2300  IF  LEN(ST$) >237  THEN ER = 1: REM  STRING IS LARGER THAN BASIC CAN HANDLE
  221. 2310  GOTO 2270
  222. 2320  POKE 216,0: IF  PEEK(222) = 16  THEN 3570
  223. 2330  IF  PEEK(222) = 13  THEN  GOTO 3660
  224. 2340  IF  PEEK(222) = 6  THEN  GOTO 3580
  225. 2350  IF  PEEK(222) = 77  THEN  FOR M = 1 TO I: LET ST$(M) = "": NEXT M: PRINT D$;"CLOSE": GOTO 3720
  226. 2360  IF  PEEK(222) < >5  THEN 3680
  227. 2370 CT = I -1
  228. 2380  PRINT D$;"CLOSE ";PH$;WP$
  229. 2390  IF ER = 1  THEN  GOSUB 3750
  230. 2400  IF ID = 1  OR MEM = 1  THEN  PRINT D$;"CLOSE ";PH$;DB$: PRINT D$;"OPEN /RAM/TEMP": PRINT D$;"WRITE /RAM/TEMP": FOR I = 1 TO CT: PRINT ST$(I): NEXT I: PRINT D$;"CLOSE /RAM/TEMP": PRINT D$;"OPEN ";PH$;DB$: GOTO 2420
  231. 2410  FOR I = 1 TO CT: LET TM$(I) = ST$(I): NEXT I
  232. 2420  REM  <CTRL-J>     JUMP TO ANALYZING FILE<CTRL-J>
  233. 2430  POKE 34,3: POKE 35,22: HOME : GOSUB 320: HOME 
  234. 2440  ONERR  GOTO 2860
  235. 2450  REM <CTRL-J>      BEGIN MERGING DATA BASE INTO WORD PROCESSOR<CTRL-J>
  236. 2460  VTAB 12: HTAB 5: PRINT "Make sure your printer is ready to print, then press any key to continue. ";: GET ZZ$: HOME 
  237. 2470  LET LT = LT +1: VTAB 5: HTAB 32: PRINT "Creating Letter ";LT
  238. 2480  VTAB 1: POKE 36,58: PRINT "Escape: Stop Printing";
  239. 2490  PRINT D$;"READ ";PH$;DB$
  240. 2500  FOR M = 1 TO R: CALL 38352:ST$ =  MID$ (ST$,1):L$(M) = ST$: NEXT M
  241. 2510  FOR I = 1 TO CT
  242. 2520  LET LA = 1
  243. 2530  VTAB 12: HTAB 27: PRINT "Merging Line ";I;" of ";CT;" lines."
  244. 2540  IF  PEEK(49152) <128  THEN 2560
  245. 2550  IF  PEEK(49152) = 155  THEN  POKE 49168,0: PRINT D$;"CLOSE ";PH$;DB$: POKE 216,0: GOTO 890
  246. 2560  IF D(I,LA) = 0  THEN 2590
  247. 2570  LET B = D(I,LA): GOSUB 480
  248. 2580  LET LA = LA +1: GOTO 2560
  249. 2590  NEXT I
  250. 2600  POKE 49168,0
  251. 2610  REM <CTRL-J>           PRINT LETTER<CTRL-J>
  252. 2620  VTAB 15: HTAB 31: PRINT "Printing Letter ";LT: PRINT D$;"PR#";SLOT
  253. 2630  PRINT  CHR$(9);"80N";
  254. 2640  IF ID = 1  THEN  PRINT  CHR$(9);"Z";
  255. 2650  FOR I = 1 TO CT
  256. 2660  IF ST$(I) =  CHR$(147)  THEN  GOTO 2790
  257. 2670  IF  LEFT$(ST$(I),1) =  CHR$(12)  AND SP = 1  THEN  PRINT  CHR$(12);: GOTO 2720
  258. 2680  IF I = CT  THEN  PRINT ST$(I);: GOTO 2790
  259. 2690  PRINT ST$(I)
  260. 2700  IF LF = 1  THEN  PRINT  CHR$(10)
  261. 2710  GOTO 2790
  262. 2720  PRINT D$;"PR#3": GOSUB 910: VTAB 1: POKE 36,58: PRINT "Escape: Stop Printing"
  263. 2730  REM <CTRL-J>       IF SINGLE SHEET, PROMPT FOR NEXT SHEET OF PAPER<CTRL-J>
  264. 2740  VTAB 12: HTAB 8: PRINT "Remove sheet of paper from printer and replace with another one.": VTAB 24: PRINT "Press any key to continue. ";: GOSUB 260: POKE 34,23: HOME : POKE 34,3: ONERR  GOTO 2860
  265. 2750  IF  PEEK(49152) = 155  THEN  POKE 49168,0: PRINT D$;"CLOSE ";PH$;DB$: POKE 216,0: GOTO 890
  266. 2760  POKE 49168,0
  267. 2770  PRINT D$;"PR#";SLOT: PRINT  CHR$(9);"80N";
  268. 2780  IF  LEN(ST$(I)) >1  THEN  LET ST$(I) =  MID$ (ST$(I),2): GOTO 2680
  269. 2790  NEXT I
  270. 2800  PRINT D$;"PR#3"
  271. 2810  PRINT : GOSUB 910
  272. 2820  IF ID = 1  OR MEM = 1  THEN  PRINT D$;"OPEN /RAM/TEMP": PRINT D$;"READ /RAM/TEMP": FOR I = 1 TO CT: CALL 38352:ST$ =  MID$ (ST$,1):ST$(I) = ST$: NEXT I: PRINT D$;"CLOSE /RAM/TEMP": GOTO 2470
  273. 2830  FOR I = 1 TO CT
  274. 2840  LET ST$(I) = TM$(I): NEXT I
  275. 2850  GOTO 2470
  276. 2860  POKE 216,0: IF  PEEK(222) = 16  THEN  PRINT D$;"CLOSE": GOTO 3590
  277. 2870  IF  PEEK(222) = 6  THEN  PRINT D$;"CLOSE": GOTO 3600
  278. 2880  IF  PEEK(222) = 13  THEN  PRINT D$;"CLOSE": GOTO 3670
  279. 2890  IF  PEEK(222) < >5  THEN  GOTO 3680
  280. 2900  POKE 216,0: PRINT D$;"CLOSE ";PH$;DB$
  281. 2910  IF M = 1  THEN 890
  282. 2920  GOTO 3630
  283. 2930  REM <CTRL-J>             PRINTER SETUP<CTRL-J>
  284. 2940  HOME : VTAB 1: HTAB 2: PRINT "Printer Setup           ";
  285. 2950 PS = 1
  286. 2960  VTAB 10: HTAB 15: PRINT "Configuration of Printer:"
  287. 2970  VTAB 12: HTAB 17: PRINT "1. "
  288. 2980  VTAB 14: HTAB 17: PRINT "2. "
  289. 2990  VTAB 16: HTAB 17: PRINT "3. "
  290. 3000  GOTO 3050
  291. 3010  IF ID = 1  THEN  VTAB 12: HTAB 20: PRINT "Printer is in Port": RETURN 
  292. 3020  VTAB 12: HTAB 20: PRINT "Printer Interface Card is in Slot": RETURN 
  293. 3030  VTAB 14: HTAB 20: PRINT "Printer needs line feed after each Return": RETURN 
  294. 3040  VTAB 16: HTAB 20: PRINT "Stop Printer at end of each page": RETURN 
  295. 3050  INVERSE : GOSUB 3010: NORMAL : GOSUB 3030: GOSUB 3040
  296. 3060  VTAB 12: POKE 36,65
  297. 3070  PRINT SLOT
  298. 3080  VTAB 14: POKE 36,65: IF LF = 0  THEN  PRINT "No": GOTO 3100
  299. 3090  PRINT "Yes"
  300. 3100  VTAB 16: POKE 36,65: IF SP = 0  THEN  PRINT "No ": GOTO 3120
  301. 3110  PRINT "Yes"
  302. 3120  VTAB 1: POKE 36,54: PRINT "Escape: Save Configuration": POKE 34,23: HOME : POKE 34,3: VTAB 24: PRINT "Type number, or use arrows, then press Return ";
  303. 3130  VTAB 24: POKE 36,47: PRINT PS;: GOSUB 260
  304. 3140  IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 3480
  305. 3150  GET IN$
  306. 3160  IF  ASC(IN$) >48  AND  ASC(IN$) <52  THEN  ON PS GOSUB 3010,3030,3040: LET PS =  VAL(IN$): GOTO 3200
  307. 3170  IF IN$ =  CHR$(13)  THEN 3210
  308. 3180  IF IN$ =  CHR$(10)  THEN  ON PS GOSUB 3010,3030,3040:PS = PS +1: IF PS = 4  THEN PS = 1:
  309. 3190  IF IN$ =  CHR$(11)  THEN  ON PS GOSUB 3010,3030,3040:PS = PS -1: IF PS = 0  THEN PS = 3
  310. 3200  INVERSE : ON PS GOSUB 3010,3030,3040: NORMAL : GOTO 3130
  311. 3210  POKE 34,23: HOME : POKE 34,3: VTAB 1: POKE 36,54: PRINT "     Escape: Printer Setup"
  312. 3220  VTAB 24: ON PS GOTO 3230,3290,3290
  313. 3230  IF ID = 1  THEN  PRINT "Enter the port number your printer is connected to: ";: GOTO 3250
  314. 3240  PRINT "Enter the slot number your printer is connected to: ";
  315. 3250  GOSUB 260: IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 3120
  316. 3260  GET TM$: IF ID = 1  AND  ASC(TM$) >48  AND  ASC(TM$) <51  AND TM$ < >"3"  THEN  PRINT TM$;: LET SLOT =  VAL(TM$): VTAB 12: POKE 36,65: PRINT SLOT: GOTO 3120
  317. 3270  IF  ASC(TM$) >48  AND  ASC(TM$) <56  AND TM$ < >"3"  THEN  PRINT TM$;: LET SLOT =  VAL(TM$): VTAB 12: POKE 36,65: PRINT SLOT: GOTO 3120
  318. 3280  GOTO 3250
  319. 3290  PRINT "Change the value?  ";
  320. 3300  INVERSE : GOSUB 3310: NORMAL : GOSUB 3320: GOTO 3330
  321. 3310  VTAB 24: HTAB 21: PRINT "No";: RETURN 
  322. 3320  VTAB 24: HTAB 25: PRINT "Yes";: RETURN 
  323. 3330  LET YES = 0
  324. 3340  GOSUB 270: IF  PEEK(49152) = 155  THEN  POKE 49168,0: GOTO 3120
  325. 3350  GET TM$: IF TM$ =  CHR$(8)  OR TM$ =  CHR$(21)  OR TM$ =  CHR$(13)  OR TM$ =  CHR$(32)  OR TM$ = "Y"  OR TM$ = "N"  OR TM$ = "n"  OR TM$ = "y"  THEN 3370
  326. 3360  GOTO 3340
  327. 3370  IF TM$ =  CHR$(13)  THEN 3400
  328. 3380  IF TM$ =  CHR$(21)  OR TM$ =  CHR$(32)  OR TM$ = "y"  OR TM$ = "Y"  THEN YES = 1: GOSUB 3310: INVERSE : GOSUB 3320: NORMAL : GOTO 3340
  329. 3390  IF TM$ =  CHR$(8)  OR TM$ = "N"  OR TM$ = "n"  THEN YES = 0: GOSUB 3320: INVERSE : GOSUB 3310: NORMAL : GOTO 3340
  330. 3400  IF SS = 4  AND YES = 1  THEN SS = 0: PRINT D$;"OPEN ";PR$;"CONFIG": PRINT D$;"WRITE ";PR$;"CONFIG": PRINT SLOT: PRINT LF: PRINT SP: PRINT D$;"CLOSE ";PR$;"CONFIG": GOTO 890
  331. 3410  IF SS = 4  AND YES = 0  THEN SS = 0: GOTO 890
  332. 3420  IF PS = 2  AND YES = 1  THEN  LET LF = LF +1: IF LF = 2  THEN LF = 0
  333. 3430  IF PS = 3  AND YES = 1  THEN  LET SP = SP +1: IF SP = 2  THEN SP = 0
  334. 3440  IF PS = 2  THEN  VTAB 14: POKE 36,65: IF LF = 0  THEN  PRINT "No ": GOTO 3120
  335. 3450  IF PS = 3  THEN  VTAB 16: POKE 36,65: IF SP = 0  THEN  PRINT "No ": GOTO 3120
  336. 3460  IF PS = 2  THEN  PRINT "Yes": GOTO 3120
  337. 3470  IF PS = 3  THEN  PRINT "Yes": GOTO 3120
  338. 3480  POKE 34,23: HOME : POKE 34,3: PRINT "Save Printer Setup? ";
  339. 3490 SS = 4: GOTO 3300
  340. 3500  REM  <CTRL-J>                     ERROR MESSAGES <CTRL-J>
  341. 3510  POKE 216,0: IF  PEEK(222) < >8  THEN  GOTO 3680
  342. 3520  HOME : VTAB 10: HTAB 15: PRINT "Cannot read the disk. Make sure a disk is in the drive": HTAB 15: PRINT "and the drive door is closed. Press any key to continue ";: GET ZZ$: HOME : GOTO 960
  343. 3530  POKE 216,0: HOME : VTAB 10: HTAB 15
  344. 3540  IF  PEEK(222) = 16  THEN  PRINT "Illegal pathname. Try again. Press any key to continue ";: GET ZZ$: HOME : VTAB 1: POKE 36,63: PRINT "                 ": GOTO 960
  345. 3550  IF  PEEK(222) = 6  THEN  PRINT "Cannot find disk with appropriate pathname.": HTAB 15: PRINT "Try again. Press any key to continue ";: GET ZZ$: HOME : VTAB 1: POKE 36,63: PRINT "                 ": GOTO 960
  346. 3560  POKE 216,0: GOTO 3680
  347. 3570  HOME : VTAB 18: HTAB 10: PRINT "The Word Processor filename, '";WP$;"'": HTAB 10: PRINT "is an illegal filename.": HTAB 10: PRINT "Try again by pressing any key to continue ";: GET ZZ$: HOME : GOTO 1530
  348. 3580  HOME : VTAB 18: HTAB 10: PRINT "Cannot find the Word Processor file '";WP$;: PRINT "'.": HTAB 10: PRINT "Try again by pressing any key to continue ";: GET ZZ$: HOME : GOTO 1530
  349. 3590  HOME : VTAB 20: HTAB 10: PRINT "The Data Base filename, '";DB$;"'": HTAB 10: PRINT "is an illegal filename.": HTAB 10: PRINT "Try again by pressing any key to continue ";: GET ZZ$: HOME : GOTO 1530
  350. 3600  VTAB 20: HTAB 10: PRINT "Cannot find the Data Base file '";DB$;"'."
  351. 3610  HTAB 10: PRINT "Try again by pressing any key ";: GET ZZ$
  352. 3620  GOTO 1530
  353. 3630  VTAB 20: HTAB 2: PRINT "There were more or fewer categories in the Data Base than you specified."
  354. 3640  HTAB 2: PRINT "The merged words in your printout may be inacurate. Check your Data Base to"
  355. 3650  HTAB 2: PRINT "determine the correct number of categories. Press any key to continue";: GET ZZ$: GOTO 890
  356. 3660  HOME : VTAB 18: HTAB 10: PRINT "The file '";WP$;"' is not an ASCII file.": GOTO 3700
  357. 3670  HOME : VTAB 18: HTAB 10: PRINT "The file '";DB$;"' is not an ASCII file.": GOTO 3700
  358. 3680  TEXT : HOME : PRINT "An unexpected error "; PEEK(222);" occurred. ": END 
  359. 3690  HOME : VTAB 18: HTAB 10: PRINT "There are more than ";LIMIT;" lines in your document. Merge only that": HTAB 10: PRINT "portion of the document that needs to be merged,": HTAB 10: PRINT "or split your document in two."
  360. 3700  HTAB 10: PRINT "Press any key to continue. ";: GET ZZ$: TEXT : GOTO 890
  361. 3710  VTAB 18: HTAB 10: PRINT "A maximum of 30 MERGE identifiers may be specified.": HTAB 10: PRINT "Press any key to continue. ";: GET ZZ$: LET R$ = "": GOTO 1940
  362. 3720  HOME : VTAB 18: HTAB 10: PRINT "Your Word Processor File is too big. Merge only that portion": HTAB 10: PRINT "of the document that needs to be merged, or split your document in two.": GOTO 3700
  363. 3730  HOME : VTAB 12: HTAB 10: PRINT "Your Word Processor File has over 6 labels in line ";I;".": GOTO 3700
  364. 3740  VTAB 18: HTAB 10: PRINT "'[MERGE#]' in your Word Processor file is not": HTAB 10: PRINT "in the correct format.": PRINT : GOTO 3700
  365. 3750  HOME : VTAB 18: HTAB 10: PRINT "One of the lines in your Word Processor file may be too long": HTAB 10: PRINT "for AppleWorks Mailing Program. See your AMP manual for details."
  366. 3760  HTAB 10: PRINT "Press any key to continue ";: GET ZZ$: RETURN 
  367. 3770  HOME : VTAB 12: PRINT "This program runs only on an Apple IIc": PRINT "or an Apple IIe with an 80-column card.": END 
  368. 3780  VTAB 12: PRINT "Please make sure your program disk is in one of the drives.": PRINT "Press any key to continue ";: GET ZZ$: GOTO 3820
  369. 3790  POKE 49168,0: RESUME : REM  IF CTRL-C IS PRESSED IGNORE
  370. 3800  END 
  371. 3810  REM <CTRL-J>   END PROGRAM (GO TO CATALYST?)<CTRL-J>
  372. 3820  POKE 49168,0: ONERR  GOTO 3780
  373. 3830  TEXT : HOME : PRINT D$;"PREFIX ";PR$: END